home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1994 November: Tool Chest / Dev.CD Nov 94.toast / Tool Chest / Development Tools & Languages / • Other Platforms / PCCTS / lang / Pascal / sym.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-09-14  |  949 b   |  46 lines  |  [TEXT/MPS ]

  1. /* T e m p l a t e  F o r  S y m b o l  T a b l e  M a n a g e r */
  2.  
  3. /* define some hash function */
  4. #ifndef HASH
  5. #define HASH(p, h) while ( *p != '\0' ) h = (h<<1) + *p++;
  6. #endif
  7.  
  8. /*  Pascal symbol table record */
  9. typedef struct _sym {
  10.     char *symbol;
  11.     struct _sym *next, *prev, **head, *scope;
  12.     unsigned int hash;
  13.     struct _sym *link;
  14.     double value;        /* storage for constants */
  15.     int token;
  16.     int level;
  17. } Sym, *SymPtr;
  18.  
  19. #ifdef __STDC__
  20. void zzs_init(int, int);
  21. void zzs_done(void);
  22. void zzs_add(char *, Sym *);
  23. Sym *zzs_get(char *);
  24. void zzs_del(Sym *);
  25. void zzs_keydel(char *);
  26. Sym **zzs_scope(Sym **);
  27. Sym *zzs_rmscope(Sym **);
  28. void zzs_stat(void);
  29. Sym *zzs_new(char *);
  30. Sym *zzs_newadd(char *);
  31. char *zzs_strdup(char *);
  32. #else
  33. void zzs_init();
  34. void zzs_done();
  35. void zzs_add();
  36. Sym *zzs_get();
  37. void zzs_del();
  38. void zzs_keydel();
  39. Sym **zzs_scope();
  40. Sym *zzs_rmscope();
  41. void zzs_stat();
  42. Sym *zzs_new();
  43. Sym *zzs_newadd();
  44. char *zzs_strdup();
  45. #endif
  46.